﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaLogica.CL.UtilidadesGenerales;


namespace CapaLogica
{
    public class Cl_Usuario
    {
        //Atributos propios
        private int _id;

        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        private int _idPersona;

        public int IdPersona
        {
            get { return _idPersona; }
            set { _idPersona = value; }
        }

        private String _cedula;

        public String Cedula
        {
            get { return _cedula; }
            set { _cedula = value; }
        }

        private String _nombre;

        public String Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        private String _primerApellido;

        public String PrimerApellido
        {
            get { return _primerApellido; }
            set { _primerApellido = value; }
        }

        private String _segundoApellido;

        public String SegundoApellido
        {
            get { return _segundoApellido; }
            set { _segundoApellido = value; }
        }

        private String _genero;

        public String Genero
        {
            get { return _genero; }
            set { _genero = value; }
        }

        private DateTime _fechaNacimineto;

        public DateTime FechaNacimineto
        {
            get { return _fechaNacimineto; }
            set { _fechaNacimineto = value; }
        }

        private int _rol;

        public int Rol
        {
            get { return _rol; }
            set { _rol = value; }
        }

        private String _nombreRol;

        public String NombreRol
        {
            get { return _nombreRol; }
            set { _nombreRol = value; }
        }

        private String _correoElectronico;

        public String CorreoElectronico 
        {
            get { return _correoElectronico; }
            set{_correoElectronico=value;}
        }

        private String contrasena;

        public String Contrasena
        {
            get { return contrasena; }
            set { contrasena = value; }
        }

        private int estado;

        public int Estado
        {
            get { return estado; }
            set { estado = value; }
        }

   


       //Constructor
        internal  Cl_Usuario(String pcedula, String pnombre, String papellido1, String papellido2,
            String pgenero,DateTime pfechNaci,int pcodRol,String pcorreo,String pcontra) {

                Cedula = pcedula;
                Nombre = pnombre;
                PrimerApellido = papellido1;
                SegundoApellido = papellido2;
                FechaNacimineto = pfechNaci;
                Genero = pgenero;
                Rol = pcodRol;
                CorreoElectronico = pcorreo;
                Contrasena = pcontra;
        }


        internal Cl_Usuario() { 
        }

        internal Cl_Usuario(Cl_Usuario obj)
        {
            Cedula = obj.Cedula;
            Nombre = obj.Nombre;
            PrimerApellido = obj.PrimerApellido;
            SegundoApellido = obj.SegundoApellido;
            FechaNacimineto = obj.FechaNacimineto;
            Genero = obj.Genero;
            Rol = obj.Rol;
            CorreoElectronico = obj.CorreoElectronico;
            Contrasena = obj.Contrasena;      
         }

       //Metodos
        public static string CreateRandomPassword(int PasswordLength)
        {
            string _allowedChars = "abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789!@$?";
            Byte[] randomBytes = new Byte[PasswordLength];
            char[] chars = new char[PasswordLength];
            int allowedCharCount = _allowedChars.Length;

            for (int i = 0; i < PasswordLength; i++)
            {
                Random randomObj = new Random();
                randomObj.NextBytes(randomBytes);
                chars[i] = _allowedChars[(int)randomBytes[i] % allowedCharCount];
            }

            string pwd =new string(chars);
            return pwd;
        }


    }
}
